C言語 配列
code:array.c
#define PRINTARRAY1D(array, length) \ do { \
printf(#array "[] = { "); \
for(int (i) = 0; i < length - 1; i++) \
} while(0)
/// 1. 配列はreturnで返せないので引数で返す
/// 2. 配列のサイズは、配列のポインタに対してsizeofで計算すると期待した
/// 計算結果が返ってこない。関数内で計算せず、引数として渡すことが必要。
void calc_square(int *in, int in_size, int *out) {
for (int i = 0; i < in_size; i++) {
}
}
int main() {
// 定数の配列の定義
// data_type array_namesize = { 要素1, 要素2, ... } // 配列の長さ取得
int a_size = sizeof(a) / sizeof(a0); // 1次元配列の処理
printf("a[] = { ");
for (int i = 0; i < a_size - 1; i++) {
}
printf("a_size = %d\n", a_size);
// 1次元の動的配列を作る
int n1;
printf("n1 = ");
scanf("%d", &n1);
int *b = (int *)malloc(sizeof(int) * n1);
if (b == NULL)
exit(EXIT_FAILURE);
for (int i = 0; i < n1; i++) {
}
printf("b[] = { ");
for (int i = 0; i < n1 - 1; i++) {
}
// 1次元の動的配列の領域開放
free(b);
// 2次元の動的配列を作る(int)
int row = 3;
int col = 2;
int **c = (int **)malloc(sizeof(int *) * row);
for (int i = 0; i < row; i++) {
ci = (int *)malloc(sizeof(int) * col); }
// 2次元の動的配列の領域開放
for (int i = 0; i < row; i++)
free(c);
// 関数で結果を返す場合
int in_arr4 = {1, 2, 3, 4}; int in_size = sizeof(in_arr) / sizeof(in_arr0); int *out_arr = (int *)malloc(sizeof(int) * in_size);
calc_square(in_arr, in_size, out_arr);
printf("out_arr[] = { ");
for (int i = 0; i < in_size - 1; i++) {
}
// マクロを使用した出力
PRINTARRAY1D(out_arr, in_size);
free(out_arr);
}
code:memo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2257 0 2257 0 0 3663 0 --:--:-- --:--:-- --:--:-- 3663
a[] = { 1,2,3,4 }
a_size = 4
n1 = 12
b[] = { 0,1,2,3,4,5,6,7,8,9,10,11 }
out_arr[] = { 1,4,9,16 }
out_arr[] = { 1,4,9,16 }
確認用
Q. 配列
Q. 動的配列
Q. 配列の定義
Q. 配列の添字アクセス
Q. 配列のサイズ取得
Q. 配列の要素追加
Q. 配列の要素更新
Q. 配列の要素削除
Q. 配列の可変長定義
Q. 配列のリサイズ
Q. 指定された値のグループ(needle)で始まっているかの判定
Q. 指定された値のグループ(needle)で終わっているかの判定
Q. 配列を逆順にから処理する
Q. 2次元配列の定義
参考
調査用